DLL v theardu a uvolneni objektu.

Otázka od: koukal@petrkoukal.cz

28. 7. 2004 8:43

Dobry den.

V theardu bezicim na pozadi (je startovan ze sluzby TService) - theard provede
zavedeni dll knihovny, tato tvori vykoony kod theardu - v ni volam dalsi dll
knihovnu pro rizeni mericich karet nidaq32.dll.

Volani loadlirary obcas selze na chybu 1114 (ERROR_DLL_INIT_FAILED). Stane se
to v priipade, ze jiz nejaky dalsi theard uspesne provedl zavedeni dll
knihovny .

Pri volanii freelibrary obcas skonci s chybou 2 (ERROR_FILE_NOT_FOUND) - po
uspesnem provedeni Loadlibrary..

Jaky mechanizmus prace s dll knihovnami pri paralelnim chodu vice theardu je
mozno pouzit ?
(Getmodulehandle .. Freelibrary nebo Loadlibrary ..Ffreelibrary ).

Muze byt problem i pri uvolneni pameti po free objektu viz. dale.

Dll v theardu inicializuje a posleze uvolnuje objekt, potrebuji zjistit zda
byl spravne uvolnen t (v dosu to byly dve promenne MemAvail a MaxAvail,
jejichz hodnota musela byt pred a po uvolneni objektu shodna).

Existuje v delphi mechanzmus pomoci ktereho je toto mozno zjistit ?

Pouzit v theardu pro uvolnani objetku .free nebo . release ?

Petr Koukal.



Odpovedá: Petr Vones

29. 7. 2004 11:52

From: <koukal@petrkoukal.cz>
> Volani loadlirary obcas selze na chybu 1114 (ERROR_DLL_INIT_FAILED). Stane
> se to v priipade, ze jiz nejaky dalsi theard uspesne provedl zavedeni dll
> knihovny .

Mas od te DLL zdrojak ? Vypada to ze chyba je nekde v ni.

> Jaky mechanizmus prace s dll knihovnami pri paralelnim chodu vice theardu
> je mozno pouzit ?

Stejny jako jinde.

> Pouzit v theardu pro uvolnani objetku .free nebo . release ?

Samozrejme Free.

Petr Vones